? $config{events_base}
: gettext('Agenda');
}
- if (defined $params{day}) {
- if ($params{day} =~ m/^([+-])(\d+)$/) {
- my ($sign, $days) = ($1, $2);
- my $duration = DateTime::Duration->new(days => $days, end_of_month => 'limit');
- $params{focus}
- = $sign eq '+'
- ? $params{focus}->add_duration($duration)
- : $params{focus}->subtract_duration($duration);
- }
- else {
- $params{focus}->set(day => $params{day});
- }
+
+ my %focus_set;
+ if (defined $params{day} and $params{day} =~ m/^(\d+)$/) {
+ my ($day) = ($1);
+ $focus_set{day} = $day;
}
- else {
- #$params{focus}->set(day => 1);
+ if (defined $params{month} and $params{month} =~ m/^(\d+)$/) {
+ my ($month) = ($1);
+ $focus_set{month} = $month;
}
- if (defined $params{month}) {
- if ($params{month} =~ m/^([+-])(\d+)$/) {
- my ($sign, $months) = ($1, $2);
- my $duration = DateTime::Duration->new(months => $months, end_of_month => 'limit');
- $params{focus}
- = $sign eq '+'
- ? $params{focus}->add_duration($duration)
- : $params{focus}->subtract_duration($duration);
- }
- else {
- $params{focus}->set(month => $params{month});
- }
+ if (defined $params{year} and $params{year} =~ m/^(\d+)$/) {
+ my ($year) = ($1);
+ $focus_set{year} = $year;
}
- if (defined $params{year}) {
- if ($params{year} =~ m/^([+-])(\d+)$/) {
- my ($sign, $years) = ($1, $2);
- my $duration = DateTime::Duration->new(years => $years, end_of_month => 'limit');
- $params{focus}
- = $sign eq '+'
- ? $params{focus}->add_duration($duration)
- : $params{focus}->subtract_duration($duration);
- }
- else {
- $params{focus}->set(year => $params{year});
- }
+ $params{focus}->set(%focus_set);
+
+ if (defined $params{day} and $params{day} =~ m/^([+-])(\d+)$/) {
+ my ($sign, $days) = ($1, $2);
+ my $duration = DateTime::Duration->new(days => $days, end_of_month => 'limit');
+ $params{focus}
+ = $sign eq '+'
+ ? $params{focus}->add_duration($duration)
+ : $params{focus}->subtract_duration($duration);
+ }
+ if (defined $params{month} and $params{month} =~ m/^([+-])(\d+)$/) {
+ my ($sign, $months) = ($1, $2);
+ my $duration = DateTime::Duration->new(months => $months, end_of_month => 'limit');
+ $params{focus}
+ = $sign eq '+'
+ ? $params{focus}->add_duration($duration)
+ : $params{focus}->subtract_duration($duration);
+ }
+ if (defined $params{year} and $params{year} =~ m/^([+-])(\d+)$/) {
+ my ($sign, $years) = ($1, $2);
+ my $duration = DateTime::Duration->new(years => $years, end_of_month => 'limit');
+ $params{focus}
+ = $sign eq '+'
+ ? $params{focus}->add_duration($duration)
+ : $params{focus}->subtract_duration($duration);
}
#debug("events: focus=".$params{focus}->strftime('%Y-%m-%d_%H-%M-%S'));